var util = require('../../../utils/util.js');
var api = require('../../../config/api.js');
var check = require('../../../utils/check.js');
var area = require('../../../utils/area.js');

var app = getApp();
Page({
    data: {
        address: {
            id: 0,
            areaCode: 0,
            address: '',
            name: '',
            tel: '',
            isDefault: 0,
            province: '',
            city: '',
            county: ''
        },
        addressId: 0,
        openSelectRegion: false,
        selectRegionList: [{
            code: 0,
            name: '省份'
        },
            {
                code: 0,
                name: '城市'
            },
            {
                code: 0,
                name: '区县'
            }
        ],
        regionType: 1,
        regionList: [],
        selectRegionDone: false
    },
    bindinputMobile(event) {
        let address = this.data.address;
        address.tel = event.detail.value;
        this.setData({
            address: address
        });
    },
    bindinputName(event) {
        let address = this.data.address;
        address.name = event.detail.value;
        this.setData({
            address: address
        });
    },
    bindinputAddress(event) {
        let address = this.data.address;
        address.addressDetail = event.detail.value;
        this.setData({
            address: address
        });
    },
    bindIsDefault() {
        let address = this.data.address;
        address.isDefault = !address.isDefault;
        this.setData({
            address: address
        });
    },
    getAddressDetail() {
        let that = this;
        util.request(api.AddressDetail, {
            id: that.data.addressId
        }).then(function (res) {
            if (res.errno === 0) {
                if (res.data) {
                    that.setData({
                        address: res.data
                    });
                }
            }
        });
    },
    setRegionDoneStatus() {
        let that = this;
        let doneStatus = that.data.selectRegionList.every(item => {
            return item.code != 0;
        });

        that.setData({
            selectRegionDone: doneStatus
        })

    },
    chooseRegion() {
        let that = this;
        this.setData({
            openSelectRegion: !this.data.openSelectRegion
        });

        //设置区域选择数据
        let address = this.data.address;
        if (address.areaCode > 0) {
            let selectRegionList = this.data.selectRegionList;
            selectRegionList[0].code = address.areaCode.slice(0, 2) + '0000';
            selectRegionList[0].name = address.province;

            selectRegionList[1].code = address.areaCode.slice(0, 4) + '00';
            selectRegionList[1].name = address.city;

            selectRegionList[2].code = address.areaCode;
            selectRegionList[2].name = address.county;

            let regionList = area.getList('county', address.areaCode.slice(0, 4));
            regionList = regionList.map(item => {
                //标记已选择的
                if (address.areaCode === item.code) {
                    item.selected = true;
                } else {
                    item.selected = false;
                }
                return item;
            });

            this.setData({
                selectRegionList: selectRegionList,
                regionType: 3,
                regionList: regionList
            });

        } else {
            let selectRegionList = [{
                code: 0,
                name: '省份',
            },
                {
                    code: 0,
                    name: '城市',
                },
                {
                    code: 0,
                    name: '区县',
                }
            ];

            this.setData({
                selectRegionList: selectRegionList,
                regionType: 1,
                regionList: area.getList('province')
            });
        }

        this.setRegionDoneStatus();

    },
    onLoad: function (options) {
        // 页面初始化 options为页面跳转所带来的参数
        console.log(options);
        if (options.id && options.id != 0) {
            this.setData({
                addressId: options.id
            });
            this.getAddressDetail();
        }
    },
    onReady: function () {

    },
    selectRegionType(event) {
        let that = this;
        let regionTypeIndex = event.target.dataset.regionTypeIndex;
        let selectRegionList = that.data.selectRegionList;

        //判断是否可点击
        if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].code <= 0)) {
            return false;
        }

        let selectRegionItem = selectRegionList[regionTypeIndex];
        let code = selectRegionItem.code;
        let regionList;
        if (regionTypeIndex === 0) {
            // 点击省级，取省级
            regionList = area.getList('province');
        } else if (regionTypeIndex === 1) {
            // 点击市级，取市级
            regionList = area.getList('city', code.slice(0, 2));
        } else {
            // 点击县级，取县级
            regionList = area.getList('county', code.slice(0, 4));
        }

        regionList = regionList.map(item => {
            //标记已选择的
            if (that.data.selectRegionList[regionTypeIndex].code == item.code) {
                item.selected = true;
            } else {
                item.selected = false;
            }
            return item;
        });

        this.setData({
            regionList: regionList,
            regionType: regionTypeIndex + 1
        });

        this.setRegionDoneStatus();
    },
    selectRegion(event) {
        let that = this;
        let regionIndex = event.target.dataset.regionIndex;
        let regionItem = this.data.regionList[regionIndex];
        let regionType = this.data.regionType;
        let selectRegionList = this.data.selectRegionList;
        selectRegionList[regionType - 1] = regionItem;

        if (regionType == 3) {
            this.setData({
                selectRegionList: selectRegionList
            });

            let regionList = that.data.regionList.map(item => {
                //标记已选择的
                if (that.data.selectRegionList[that.data.regionType - 1].code == item.code) {
                    item.selected = true;
                } else {
                    item.selected = false;
                }
                return item;
            });

            this.setData({
                regionList: regionList
            });

            this.setRegionDoneStatus();
            return
        }

        //重置下级区域为空
        selectRegionList.map((item, index) => {
            if (index > regionType - 1) {
                item.code = 0;
                item.name = index == 1 ? '城市' : '区县';
            }
            return item;
        });

        this.setData({
            selectRegionList: selectRegionList,
            regionType: regionType + 1
        });

        let code = regionItem.code;
        let regionList = [];
        if (regionType === 1) {
            // 点击省级，取市级
            regionList = area.getList('city', code.slice(0, 2))
        } else {
            // 点击市级，取县级
            regionList = area.getList('county', code.slice(0, 4))
        }

        this.setData({
            regionList: regionList
        });

        this.setRegionDoneStatus();
    },
    doneSelectRegion() {
        if (this.data.selectRegionDone === false) {
            return false;
        }

        let address = this.data.address;
        let selectRegionList = this.data.selectRegionList;
        address.province = selectRegionList[0].name;
        address.city = selectRegionList[1].name;
        address.county = selectRegionList[2].name;
        address.areaCode = selectRegionList[2].code;

        this.setData({
            address: address,
            openSelectRegion: false
        });

    },
    cancelSelectRegion() {
        this.setData({
            openSelectRegion: false,
            regionType: this.data.regionDoneStatus ? 3 : 1
        });

    },
    cancelAddress() {
        wx.navigateBack();
    },
    saveAddress() {
        console.log(this.data.address);
        let address = this.data.address;

        if (address.name == '') {
            util.showErrorToast('请输入姓名');

            return false;
        }

        if (address.tel == '') {
            util.showErrorToast('请输入手机号码');
            return false;
        }


        if (address.areaCode == 0) {
            util.showErrorToast('请输入省市区');
            return false;
        }

        if (address.addressDetail == '') {
            util.showErrorToast('请输入详细地址');
            return false;
        }

        if (!check.isValidPhone(address.tel)) {
            util.showErrorToast('手机号不正确');
            return false;
        }

        let that = this;
        util.request(api.AddressSave, {
            id: address.id,
            name: address.name,
            tel: address.tel,
            province: address.province,
            city: address.city,
            county: address.county,
            areaCode: address.areaCode,
            addressDetail: address.addressDetail,
            isDefault: address.isDefault
        }, 'POST').then(function (res) {
            if (res.errno === 0) {
                //返回之前，先取出上一页对象，并设置addressId
                var pages = getCurrentPages();
                var prevPage = pages[pages.length - 2];
                console.log(prevPage);
                if (prevPage.route == "pages/checkout/checkout") {
                    prevPage.setData({
                        addressId: res.data
                    });

                    try {
                        wx.setStorageSync('addressId', res.data);
                    } catch (e) {

                    }
                    console.log("set address");
                }
                wx.navigateBack();
            }
        });

    },
    onShow: function () {
        // 页面显示
    },
    onHide: function () {
        // 页面隐藏

    },
    onUnload: function () {
        // 页面关闭

    }
});